Я только новичок в программировании на Swift. Моя идея довольно проста - приложение с двумя кнопками. При нажатии текстовое поле изменит свой текст. В Main.StoryBoard я добавляю текстовое поле и две кнопки. В файле ViewController.swift. Я пишу так: импорт UIKit class ViewController: UIViewController { @IBOutlet слабое текстовое поле var: UITextField! Кнопка слабой переменной @IBOutlet: UIButton! @IBOutlet weak var button2: UIButton! @IBAction func action1 (_ отправитель: UIButton) { textfield.text = "вы только что нажали кнопку button1" } @IBAction func action2 (_ отправитель: UIButton) { textfield.text = "вы только что нажали на button2" } } Предполагается, что все в порядке. Однако появляется ошибка, которая показывает: thread1: сигнал SIGABRT в файле AppDelegate.swift строка: класс AppDelegate: UIResponder, UIApplicationDelegate Что не так с моим кодом?
2021-01-15 08:18:25
Чтобы решить эту проблему, сначала очистите проект, а затем перестройте его. Чтобы очистить проект, перейдите в MenuBar: Product -> Clean Затем, чтобы перестроить проект, просто нажмите кнопку «Выполнить» как обычно. | Вы получаете ошибку SIGABRT всякий раз, когда у вас отключена розетка. Щелкните контроллер представления в раскадровке и перейдите к соединениям на боковой панели (символ стрелки). Посмотрите, есть ли у вас там дополнительная розетка, дубликат или лишняя, которая не подключена. Если это не так, возможно, вы неправильно подключили свои розетки к своему коду. Просто помните, что SIGABRT происходит, когда вы пытаетесь вызвать выход (кнопка, представление, текстовое поле и т. Д.), Которого там нет. | Для меня это не выход. Я решил проблему, перейдя к ошибке и прочитав, что там написано. (Также Noob ..) Это была ошибка: И решение было здесь: Просто прокрутите вывод вверх, и ошибка будет обнаружена. | Распространенной причиной этого типа ошибки является то, что вы могли изменить имя своего IBOutlet или IBAction, вы можете просто проверить это, перейдя в исходный код. Щелкните main.storyboard и выберите «Открыть как». а затем выберите исходный код исходный код откроется а затем проверьте, есть ли имя iboutlet или ibaction, которое вы изменили, если есть, выберите часть и удалите ее, а затем снова создайте iboutlet или ibaction. Это должно решить вашу проблему | В моем случае я не получал ошибку, просто сбой в AppDelegate, и мне пришлось снять флажок со следующей опции: OS_ACTIVITY_MODE, тогда я мог бы получить настоящую причину сбоя в моем .xib файле. Надеюсь, это тоже поможет вам :) | У меня такая же проблема. Я сделал кнопку в раскадровке и подключил ее к ViewController, а затем удалил кнопку. Таким образом, соединение все еще было, но кнопки не было, и поэтому я получил ту же ошибку, что и вы. Исправить: Перейдите в инспектор соединений (стрелка в правом верхнем углу в раскадровке) и удалите все неиспользуемые соединения. | Если вы столкнетесь с этим в Xcode 10, вам придется очистить его перед сборкой. Или переключитесь на устаревшую систему сборки. Файл -> Настройки рабочего пространства ... -> Система сборки: устаревшая система сборки. | В моем случае журнала вообще не было. Моя ошибка заключалась в том, чтобы поместить контроллер представления в стек навигации, который уже был частью стека навигации. | Иногда это также происходит, когда функцию необходимо выполнить только в основном потоке, поэтому вы можете исправить это, назначив ее основному потоку следующим образом: - DispatchQueue.main.async { ваш код здесь } | Для меня эта ошибка была связана с тем, что у меня был шаг подготовки перехода, который не был применим к выполняемому переходу. длинная история: override func prepare (для перехода: UIStoryboardSegue, отправитель: Any?) { пусть gosetup = segue.destination as! Обновить gosetup.wherefrom = updatestring } Это делалось со всеми сегментами, когда это было только для одного. Итак, я создаю логическое значение и помещаю в него gosetup. | Это очень распространенная ошибка, которая может произойти по нескольким причинам. Чаще всего это происходит, когда IBOUTLET / IBACTION, подключенный к контроллеру представления в раскадровке, удаляется из файла swift, но не из раскадровки. Если это не так, используйте журнал на нижней панели инструментов, чтобы выяснить, в чем заключается ошибка, и диагностировать ее. Вы можете использовать точки останова и отладку, чтобы помочь вам найти ошибку. Чтобы узнать, как исправить ошибку, воспользуйтесь статьей, которую я нашел в Google: https://rayaans.com/fixing-the-notorious-sigabrt-error-in-xcode | В моем случае я использовал RxSwift для выполнения поиска. Я постоянно использовал общий экземпляр определенного класса внутри метода onNext, что, вероятно, сделало его недоступным (Mutex). Будьте осторожны с такими случаями только в случае крайней необходимости. В моем случае я заранее использовал пару переменных, чтобы безопасно (и последовательно) сохранить возвращаемые значения методов общего экземпляра, и повторно использовал их внутри блока onNext. | У меня такая же проблема. В моем случае я просто перезаписал файл GoogleService-Info.plist на этом пути: Платформа \ ios \ YOUR_APP_NAME \ Resources \ Resources В моем случае файлы присутствовали без данных. | Весьма активный вопрос. Заработайте 10 репутации, чтобы ответить на этот вопрос. Требование репутации помогает защитить этот вопрос от спама и случаев отсутствия ответов. Не тот ответ, который вы ищете? Посмотрите другие вопросы с метками ios swift или задайте свой вопрос.